package helexis.game.tyrian.service;

import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.Preferences;

public class PreferencesManager {
	
	/**
	 * 볼륨 설정 키
	 */
	private static final String PREF_VOLUME = "volume";
	/**
	 * 백그라운드 음악 설정 키
	 */
	private static final String PREF_MUSIC_ENABLED = "music.enabled";
	/**
	 * 효과음 설정 키
	 */
	private static final String PREF_SOUND_ENABLED = "sound.enabled";
	/**
	 * Preferences 파일 명
	 */
	private static final String PREFS_NAME = "tyrian";
	
	
	/**
	 * GDX 에서 제공하는 Preferences 를 리턴합니다.
	 * 
	 * @return Preferences 객체
	 */
	public Preferences getPreferences() {
		return Gdx.app.getPreferences(PREFS_NAME);
	}//end of getPreference()
	
	
	/**
	 * 저장된 볼륨을 리턴합니다.
	 * 
	 * 저장된 값이 없으면, 0.5 를 리턴합니다.
	 * 
	 * @return 볼륨
	 */
	public float getVolume() {
		return this.getPreferences().getFloat(PREF_VOLUME, 0.5f);
	}//end of getVolume()
	
	/**
	 * 볼륨을 저장합니다.
	 * 
	 * @param volume 볼륨
	 */
	public void setVolume(float volume) {
		Preferences pref = this.getPreferences();
		pref.putFloat(PREF_VOLUME, volume);
		pref.flush();
	}//end of setVolume()
	
	
	/**
	 * 저장된 백그라운드 음악 설정을 리턴합니다.
	 * 
	 * 저장된 값이 없으면, true 를 리턴합니다.
	 * 
	 * @return 백그라운드 음악 설정
	 */
	public boolean isMusicEnabled() {
		return this.getPreferences().getBoolean(PREF_MUSIC_ENABLED, true);
	}//end of isMusicEnabled()
	
	/**
	 * 백그라운드 음악 설정을 저장합니다.
	 * 
	 * @param musicEnabled 백그라운드 음악 설정
	 */
	public void setMusicEnabled(boolean musicEnabled) {
		Preferences pref = this.getPreferences();
		pref.putBoolean(PREF_MUSIC_ENABLED, musicEnabled);
		pref.flush();
	}//end of setMusicEnabled()
	
	
	/**
	 * 저장된 효과음 설정을 리턴합니다.
	 * 
	 * 저장된 값이 없으면, true 를 리턴합니다.
	 * 
	 * @return 효과음 설정
	 */
	public boolean isSoundEnabled() {
		return this.getPreferences().getBoolean(PREF_SOUND_ENABLED, true);
	}//end of isSoundEnabled()
	
	/**
	 * 효과음 설정을 저장합니다.
	 * 
	 * @param musicEnabled 효과음 설정
	 */
	public void setSoundEnabled(boolean soundEnabled) {
		Preferences pref = this.getPreferences();
		pref.putBoolean(PREF_SOUND_ENABLED, soundEnabled);
		pref.flush();
	}//end of setSoundEnabled()
	

}
//end of TyrianPreferences.java
